package zdori.swing;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Enumeration;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.plaf.FontUIResource;
import javax.swing.JMenu;

public class SwingMain extends JFrame {

	private JPanel contentPane;
	//private JPopupMenu popupMenu;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Thread.sleep(2000);
					SwingMain frame = new SwingMain();
					frame.setLocationRelativeTo(null);
					//화면 정중앙에 표시
					frame.setIconImage(initIcon());
					UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
					//jFrame에 사용할 아이콘 지정
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public SwingMain() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		

		//프로그램 전체 글꼴 지정
		setUIFont(new FontUIResource("맑은 고딕",Font.ITALIC,14));
		setTitle("자바스윙프로젝트");
		//제목지정
		
		setBounds(100, 100, 1024, 768);
		setResizable(false);
		//크기조정불가
		
		setJMenuBar(new SwingMenu());
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		
		
		//JPopupMenu 추가 내꺼
		//SwingPopupMenu spopMenu = new SwingPopupMenu();
		
		contentPane.setLayout(new BorderLayout(0, 0));
		
		new SwingPopupMenu_t(contentPane);//팝업메뉴 선생님
		
		contentPane.add( new SwingToolBar(),BorderLayout.NORTH); //툴바 추가
		contentPane.add( new SwingStatusBar(),BorderLayout.SOUTH); //상태표시줄추가
		
		//JPopupMenu 객체를 등록함
		//addPopup(contentPane, spopMenu.getSwingPopupMenu()); // 내꺼
		
		setContentPane(contentPane);
	}

	
	//프로그램 아이콘 불러오기
	private static Image initIcon(){
		String image = "/images/main/home.png";//128
		//String image = "/images/main/home_icon.png";//48
		//아이콘으로 사용할 이미지가 있는 위치
		Image icon = new ImageIcon(SwingMain.class.getResource(image)).getImage();
		//Image icon = new ImageIcon(getClass().getResource(image)).getImage();
		//getClass()가 현재 실행중인것 
		return icon;
	}		
	
	//FontUIResource 를 이용해서  프로그램 전체 글꼴 변경하기
	//UIManager : 스윙에서 사용가능한 모든 컴퍼넌트에 관한 정보를 다루는 클래스
	
	private void setUIFont(FontUIResource fuir){
		Enumeration<Object> keys = UIManager.getDefaults().keys();
		//모든 스윙컴퍼넌트 이름을 keys에 저장
		
		
		while(keys.hasMoreElements()){
			Object key = keys.nextElement();
			Object val = UIManager.get(key);
			if(val!= null&& val instanceof FontUIResource)UIManager.put(key, fuir);
			//속성이 폰트와 관련 있으면 사용자가 지정한 글꼴로 변경
		}
	}
	
	private static void addPopup(Component component, final JPopupMenu popup) {
		component.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent e) {
				if (e.isPopupTrigger()) {
					showMenu(e);
				}
			}
			public void mouseReleased(MouseEvent e) {
				if (e.isPopupTrigger()) {
					showMenu(e);
				}
			}
			private void showMenu(MouseEvent e) {
				//System.out.println("321");
				popup.show(e.getComponent(), e.getX(), e.getY());
			}
		});
	}
	
}

